/*
 * @描述: 
 * @创建者: kilomChou
 * @Date: 2021-04-11 16:56:02
 * @最后编辑: kilomChou
 * @LastEditTime: 2021-05-09 19:01:23
 */

/** 工具 */
export default class UtilCls {

    /** 单例 */
    private constructor() { }
    /** 实例 */
    static readonly ins = new UtilCls();

    /** 从数组中删除元素 */
    arrRemoveItem<T>(arr: Array<T>, item: any) {
        return  arr.splice(arr.indexOf(item), 1);
    }

    /** 返回 [最小值 , 最大值] 之间的值 */
    range(value: number, min: number, max: number) {
        return Math.max(min, Math.min(value, max))
    }

    /** 补零 */
    zeroFill(num: number | string, length: number) {
        let str = num.toString();
        for (let i = length - str.length; i > 0; i--) {
            str = "0" + str;
        }
        return str;
    }

    /** 数组去重 */
    unique<T>(arr: Array<T>) {
        return Array.from(new Set(arr))
    }

    /** 保留几位小数(四舍五入) 默认:一位小数 */
    fixed(num: number, count: number = 1) {
        return parseFloat(num.toFixed(count))
    }

    /** 数组连接Set */
    arrConcatSet<T>(arr: Array<T>, set: Set<T>) {
        return arr.concat(Array.from(set))
    }

    /** 颜色字符串转为rgb整型 */
    color2rgb(color: string) {
        color = color.replace("#", '')
        let r: number, g: number, b: number
        if (color.length == 3) {
            color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2]
        }
        r = parseInt(color.slice(0, 2), 16)
        g = parseInt(color.slice(2, 4), 16)
        b = parseInt(color.slice(4, 6), 16)
        return r * 65536 + g * 256 + b
    }

    /** rgb整型转为颜色字符串 */
    rgb2color(rgb: number) {
        let r = Math.floor(rgb / 65536)
        rgb -= r * 65536
        let g = Math.floor(rgb / 256)
        let b = rgb - g * 256
        return `#${this.zeroFill(r.toString(16), 2)}${this.zeroFill(g.toString(16), 2)}${this.zeroFill(b.toString(16), 2)}`
    }
}
/** 工具 */
export const Util = UtilCls.ins